# 装饰器:可以让我们在不修改原有函数内部代码的基础上 给函数增加新的功能
# 可以在原有的操作面前或者后面随意的添加新的功能
flag = False

def login():
    global flag
    flag = True


def wrapper(fn):  # 把被装饰的函数传递进来
    def inner():
        print("这里是被装饰函数执行之前")
        fn()  # 执行被装饰的函数
        print("这里是被装饰函数执行之后")
    return inner  # 把内层函数返回

# 重复性代码多
# 语法糖
@wrapper
def add():
    if flag:
        # 执行新增操作
        # 日志记录功能
        print("我是新增函数")
    else:
        print("没有登录 请前往登录!")


def upd():
    pass


def remove():
    pass


def search():
    pass


login()
# a = wrapper(add)
# a()  # 执行的是inner
# add = wrapper(add)  # 此时的add就变成了inner
# add()  # 执行的是inner
add()

